//给出一个有序的整数数组A 和 有序的整数数组B，
// 请将数组B合并到数组A中，变成一个有序的升序数组
//balabala

//题目链接：
/*https://www.nowcoder.com/questionTerminal/4ddef2461b6f4af28e7573704c5bf1c4*/



//疑问：
//博哥是怎么处理A中有效元素个数和应有空间大小的
//输入一个数，直接成为创建的数组的大小
import java.sql.SQLOutput;
import java.util.Scanner;

//建议：画图分析动态操作比较实现过程，然后由代码实现
public class Test2 {



    public static int[] upOder(int[] A, int[] B){//方法：使数组升序

        int k =A.length-1;//A中元素个数,放置还没比较的中的最大的元素

        int j =B.length-1;//B中元素个数



        int i =A.length - B.length -1;//A中原始有效元素个数


        while(i>=0 && j>=0){

            if(A[i]<B[j]){

                //A[k--]=B[j--];
                A[k] = B[j];
                k--;
                j--;

            }else {

                //A[k--]=A[i--];
                A[k] = A[i];
                k--;
                i--;

            }

        }

        //走到这里，说明数组A或B必有一个走完了
        while(i>=0){//A还没走完， B走完了

            A[k--]=A[i--];

        }
        while(j>=0){//B还没走完， A走完了

            A[k--]=B[j--];

        }

        return A;//将比较完的数组返回

    }

    public static void creatArray(int[] A, int m){//方法：创建并初始化数组
        Scanner sc = new Scanner(System.in);


        System.out.println("请输入数组"+m+"个元素");
        int i = 0;//下标，遍历数组
        while(i<m){

            A[i] = sc.nextInt();
            i++;

        }

    }

    public static void main(String[] args) {

        //Test2 t = new Test2();
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入数组A的元素个数：");
        //int[] A = new int[sc.nextInt()];//这种数组大小的写法！！！
        int m = sc.nextInt();


        System.out.println("请输入数组B的元素个数：");
        int n = sc.nextInt();
        int[] B = new int[n];//这种数组大小的写法！！！

        int[] A = new int[m+n];



        creatArray(A,m);//创建并初始化两个数组
        creatArray(B,n);

        //System.out.println(upOder(A, B));
        int[] F = upOder(A,B);
        System.out.println("最终的数组为：");
        for(int x:F){

            System.out.println(x);

        }


    }




}
